package com.ssm.service;

import java.io.File;

import com.alibaba.fastjson.JSONObject;

public interface CaseObjService {

	/**
	 * 从excel导入数据
	 * 
	 * @excelFile 上传来的excel文件
	 * @return 上传失败的用例编号及失败原因
	 * {"message":"all success/part success/none success", "detail":[{"casenum":"casenum", "reason":"reason"}]}
	 * */
	JSONObject importFromExcel(File excelFile, String product, String version);
	
	/**
	 * 将数据导出到excel
	 * 
	 * @return 生成的临时文件地址，供下载使用
	 * */
	JSONObject exportToExcel();
	
	/**
	 * 根据条件：产品/版本/自动化类型/执行结果/
	 * 查询的用例基础信息：name/num/path
	 * 注意：结果是一个zNodes可以直接使用的JSONArray
	 * 
	 * @condition 查询条件，某个条件为null代表不筛选
	 * {"produce":"produce", "version":"version", "lastresult":"lastresult", "casetype":"casetype", "":"", "":"", "":""}
	 * @return 查询到的用例JSONObject数组
	 * */
	JSONObject getCaseBaseInfo(JSONObject condition);

	/**
	 * 根据用例编号，查询一个用例的详情
	 * 
	 * @casenum 用例编号
	 * @return 用例对象
	 * */
	JSONObject getCaseObjByNum(String casenum);
	
	/**
	 * 修改某一条用例，并将当前结果保存到历史表中
	 * 
	 * @caseinfo 用例详情
	 * @return 操作执行结果：{"message":"success", "detail":"success"}
	 * */
	JSONObject modifyCase(JSONObject caseobj);
	
	/**
	 * 新增某一条用例
	 * 
	 * @caseinfo 用例详情
	 * @return 操作执行结果：{"message":"success", "detail":"success"}
	 * */
	JSONObject addCase(JSONObject caseobj);
	
	/**
	 * 删除某一条用例
	 * 
	 * @caseinfo 用例详情
	 * @return 操作执行结果：{"message":"success", "detail":"success"}
	 * */
	JSONObject delCase(String casenum);

	/**
	 * 查询用例数据，返回适合zTree使用的数据
	 * @param product 当前产品
	 * @param version 当前版本
	 * @param paramJson 筛选条件
	 * @return
	 */
	JSONObject getZTreeData(JSONObject paramJson);

	/**
	 * 获取一个用例的详情
	 * @param paramJson
	 * @return
	 */
	JSONObject getCaseDetail(JSONObject paramJson);
}
